package netty.InAndOutBundHandler.server;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.ByteToMessageDecoder;
import sun.java2d.pipe.SpanIterator;

import java.util.List;

/**
 * @ClassName MyByteToLongDecder
 * @Description TODO
 * @Author director吴
 * @Date 2022/4/21 13:15
 * @Version 1.0
 **/
public class MyByteToLongDecder extends ByteToMessageDecoder {

    /**
     *
     * @param channelHandlerContext  上下文对象
     * @param byteBuf 入站Buf数据
     * @param list 集合，将解码后的数据传递给下一个Handler处理
     * @throws Exception
     */
    @Override
    protected void decode(ChannelHandlerContext channelHandlerContext, ByteBuf byteBuf, List<Object> list) throws Exception {

        //因为Long 类型 = 8个字节 (当数据大于等于8个字节时，才读取一个Long)
        if (byteBuf.readableBytes() >= 8 ){
            list.add(byteBuf.readLong());
            System.out.println(list);
        }

    }
}
